/**
 * 
 */
package com.gragra.sampling;
/**
 * A general interface for the annealing schedules used in MCMC sampling and other algorithms
 * @author Christoph Teichmann
 * created Jan 11, 2013 7:29:44 PM
 * @version 0.1
 */
public interface Annealing
{
	/**
	 * returns an annealing value for the ith burn-in step, value is meant to be multiplied with the probability
	 * @param i
	 * @return
	 */
	double getBurnInAnnealing(int i);
	/**
	 * returns an annealing value for the ith sampling step, value is meant to be multiplied with the probability
	 * @param i
	 * @return
	 */
	double getSamplingAnnealing(int i);
	/**
	 * sets the burn-in annealing schedule to the next value
	 */
	void reduceAnnealingBurnIn();
	/**
	 * sets the sampling annealing schedule to the next value
	 */
	void reduceAnnealingSampling();
}